package com.wtwd.device.push;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

/**
 * @author mjy
 * @date 2021/10/29
 * @description
 */
@ApiModel(value = "PushEntity对象", description = "")
public class PushEntity implements Serializable {

    private static final long serialVersionUID = 1000989898L;

    @ApiModelProperty(value = "AppKey信息", required = true)
    private Long appKey;

    /**
     * MESSAGE：表示消息。
     * NOTICE：表示通知。
     */
    @ApiModelProperty(value = "MESSAGE：表示消息,NOTICE：表示通知", required = true)
    private String pushType;

    /**
     * iOS：iOS设备
     * ANDROID：Android设备
     * ALL：全部设备类型
     */
    @ApiModelProperty(value = "iOS,ANDROID,ALL", required = true)
    private String deviceType;

    /**
     * DEVICE：根据设备推送。
     * ACCOUNT：根据账号推送。
     * ：根据别名推送。
     * TAG：根据标签推送。
     * ALL：推送给全部设备（同一种DeviceType的两次全推的间隔至少为1秒）。
     */
    @ApiModelProperty(value = "DEVICE,ACCOUNT,,TAG,ALL）", required = true)
    private String target;

    /**
     * Target=DEVICE，值如deviceid1,deviceid2（最多支持1000个）。
     * Target=ACCOUNT，值如account1,account2（最多支持1000个）。
     * Target=，值如1,2（最多支持1000个）。
     * Target=TAG，支持单Tag和多Tag，格式请参见标签格式。
     * Target=ALL，值为ALL。
     * Target=TBD，值为TBD。
     */
    @ApiModelProperty(value = "根据Target的值的不同取不同的值", required = true)
    private String targetValue;


    /**
     * Android推送时通知/消息的标题以及iOS消息的标题。
     * <p>
     * iOS 10+通知显示标题。
     * <p>
     * iOS 8.2 <= iOS系统 < iOS 10：替换通知应用名称（选填）。长度限制：200字节。
     */
    @ApiModelProperty(value = "消息类容", required = true)
    private String title;

    /**
     * Android推送时通知的内容/消息的内容；iOS消息/通知内容
     * <p>
     * Android:
     * Android 消息: Title + Body  <= 1800B
     * Android 通知: Title + Body + AndroidMusic + AndroidOpenType + AndroidActivity + AndroidOpenUrl + AndroidExtParameter <= 1800B
     * 其中 Title， Body 字段都不能为空
     * <p>
     * iOS:
     * iOS 消息: Title ＋ Body <= 1800B
     * iOS 通知: Summary + iOSMusic + iOSBadge + iOSExtParameter <= 1800B；
     * 其中，中文字符算 3 Bytes;  Title， Body， Summary 字段不能为空
     */
    @ApiModelProperty(value = "消息类容", required = true)
    private String body;

    @ApiModelProperty(value = "额外参数", required = true)
    private String extraParams;

    @ApiModelProperty(value = "软件环境,ios通知时必填", required = true)
    private String env;

    public String getEnv() {
        return env;
    }

    public void setEnv(String env) {
        this.env = env;
    }

    public String getExtraParams() {
        return extraParams;
    }

    public void setExtraParams(String extraParams) {
        this.extraParams = extraParams;
    }

    public Long getAppKey() {
        return appKey;
    }

    public void setAppKey(Long appKey) {
        this.appKey = appKey;
    }

    public String getPushType() {
        return pushType;
    }

    public void setPushType(String pushType) {
        this.pushType = pushType;
    }

    public String getDeviceType() {
        return deviceType;
    }

    public void setDeviceType(String deviceType) {
        this.deviceType = deviceType;
    }

    public String getTarget() {
        return target;
    }

    public void setTarget(String target) {
        this.target = target;
    }

    public String getTargetValue() {
        return targetValue;
    }

    public void setTargetValue(String targetValue) {
        this.targetValue = targetValue;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

}
